package com.westos.userauth.service;

import com.westos.userauth.domain.*;
import com.westos.userauth.dto.SecurityPermissionDto;

import java.util.List;
import java.util.Set;

public interface Security {

    // 根据用户名查找用户的权限组（方政）
    List<UserLoginSecurityGroup> findUserLoginSecurityGroupByUserLoginId(String userLoginId);

    //权限是否在权限组中（方政）
    boolean securityGroupPermissionExists(String permissionId,String groupId);

    //是否有权限（方政）
    boolean  hasPermission(String loginId,String permissionId);

    //是否有角色权限（方政）
    boolean hasRolePermission(String permissionId,String groupId);

    //===添加权限到权限组（刘浩）
    boolean addSecurityPermissionToSecurityGroup(SecurityPermissionDto securityPermissionDto);

    //添加用户登录到权限组（刘浩）
    int addUserLoginToSecurityGroup(UserLoginSecurityGroup userLoginSecurityGroup);

    //创建用户登录（刘浩）
    int createUserLogin(UserLogin userLogin);

    // ===创建新的权限组（刘浩）
    int createSecurityGroup(String groupId,String description);

    //修改权限组
    int updateSecurityGroup(SecurityGroup securityGroup);

    //创建权限
    int createSecurityPermission(SecurityPermission securityPermission);

    //修改权限
    int updateSecurityPermission(SecurityPermission securityPermission);

    //从安全组中删除权限
    boolean removeSecurityPermissionFromSecurityGroup(String permissionId,String groupId);

   //修改用户登录(白伟)
   boolean updateUserLoginToSecurityGroup(UserLoginSecurityGroup userLoginSecurityGroup);

    //从权限组中删除用户登录(白伟)
    boolean removeUserLoginToSecurityGroup(UserLoginSecurityGroup userLoginSecurityGroup);

    //权限检查(白伟)
    Set<SecurityPermission> securityPermissionCheck(UserLogin userLogin);

    //创建用户登录的安全提示问题(白伟)
    boolean createUserLoginSecurityQuestion(UserLoginSecurityQuestion userLoginSecurityQuestion);

    //修改用户登录的安全提示问题
    Boolean updateUserLoginSecurityQuestion(UserLoginSecurityQuestion userLoginSecurityQuestion);

    //删除用户登录的安全提示问题
    Boolean removeUserLoginSecurityQuestion(UserLoginSecurityQuestion userLoginSecurityQuestion);

    //删除权限组
    Boolean deleteSecurityGroup(String groupId);

    //修改用户登录
    Boolean updateUserLogin(UserLogin userLogin);

    //修改用户的密码
    Boolean updateUserLoginPassword(String userLoginId,String currentPassword,String newpassword);
}
